package gov.pr.celepar.sentinela.admin.action.consultas;

import gov.pr.celepar.framework.util.Pagina;
import gov.pr.celepar.sentinela.admin.action.BaseAction;
import gov.pr.celepar.sentinela.admin.excecao.SentinelaServerException;
import gov.pr.celepar.sentinela.admin.facade.ConsultasFacade;
import gov.pr.celepar.sentinela.admin.form.consultas.UsuariosSistemaReportForm;
import gov.pr.celepar.sentinela.admin.pojo.Usuario;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

public class UsuariosSistemaReportAction extends BaseAction {

	private static Log logger = LogFactory
			.getLog(AtivacaoAuditoriaReportAction.class);

	public String executar(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		UsuariosSistemaReportForm frm = (UsuariosSistemaReportForm) form;

		this.listarSistemasAutorizados(request);// aqui populou a lista
		// (comboBox no caso do
		// referente JSP) Sistema, pois
		// deu um setAttribute na sessão

		logger.debug("Pegando informa��es da consulta");

		// **** PREENCHE A PAGINA DE DADOS E REPASSA PARA O JSP TRATAR ISSO
		// **********************************************************************
		if (frm.getAcao() != null && frm.getAcao().equals("pesquisar")
				&& frm.getCodSistema() != null
				&& !frm.getCodSistema().equals("")) {

			Long codSistema = Long.decode(frm.getCodSistema());
			Integer indicePagina = new Integer(frm.getIndice() == null ? "1"
					: frm.getIndice());
			Collection<Usuario> dados = ConsultasFacade
					.listarUsuariosSistema(codSistema);

			if (dados != null && !dados.isEmpty()) {

				Integer totalRegistros = new Integer(dados.size());
				Pagina pagina = new Pagina(totalRegistros, indicePagina,
						totalRegistros);
				pagina.setRegistros(dados);

				request.setAttribute("pagina", pagina); // preenche a página, se
				// a página estiver
				// preenchida, o JSP vai
				// desenhar o resultado
				logger.debug("Foram recuperados " + totalRegistros
						+ " registros de Log");

			} else {
				throw new SentinelaServerException(
						"Nenhum registro encontrado! ");
			}
		}

		return "usuarios_de_um_sistema";// esse retorno vai para o findFoward()
		// da classe mãe
	}
}
